Optical code scanners are used to read optical codes and the information encoded therein. Optical code scanners may suitably be combined with other apparatuses or systems that use optical codes. For example, an optical code scanner can be integrated with a point of sale (POS) terminal to read optical codes on items which are presented to the POS terminal for purchase as part of a purchase transaction.
There are a number of different optical formats that can be employed by an optical code to encode machine readable information that can then be read by an optical code scanner. Each optical format has an associated set of rules and optical patterns and elements that are used to represent encoded data. Some optical formats are classified as two dimensional (2D) because the optical formats encode information in two different physical directions or dimensions. 2D optical codes present a number of issues that must be addressed before the 2D optical codes can be read by an optical code scanner.
One issue relates to non-uniform illumination of an optical code as it is presented to the optical code scanner for scanning. Non-uniform illumination causes areas of an optical code to be lighter or darker than other areas of the optical code. This results in unpredictable contrast variations across the optical code which makes distinguishing the elements of the optical code extremely difficult.
Another issue relates to non-linear geometrical distortion of an optical code. Geometrical distortion is a discrepancy between the horizontal and vertical dimensions of an image. Geometrical distortion can cause a circle to appear as an oval or distort the relationship of adjacent elements of an optical code causing the elements to be misread.
Another issue relates to the amount of hardware based computing power that can be required to process a captured megapixel image to read an optical code within a specified period of time. An image based optical code scanner must be able to process a minimal number of images per second or it will slow down downstream processes that require the data from the scanned optical codes. To meet these requirements, optical code scanners have used specialized hardware acceleration devices to process the images so that the minimal number of images per second can be met. However, hardware acceleration devices are expensive and are not available in some devices, such as personal computers, cellular phones, tablet computers and hand held scanners.